
package com.yewen.http.util;

import com.yewen.util.HMACEncryptUtil;

/**
 * @Classname HMACEncryptUtil
 * @Description 测试JWT中的HMAC256算法，以保证服务端、客户端之间token传送的安全性。
 * @Date 2022/3/21 13:26
 * @Created by TaoVh
 */
public class HMACEncryptUtilTest {


    public static void main(String[] args) {
        String trueToken = HMACEncryptUtil.generateToken("taotao", false);
        String falseToken = HMACEncryptUtil.generateToken("taotao", true);
        System.out.println(HMACEncryptUtil.verify(falseToken));
//        try {
//            /*生成HMACSHA256算法的私有密钥*/
//            KeyGenerator keyGenerator = KeyGenerator.getInstance("HmacSHA256");
//            SecureRandom random  = new SecureRandom();
//            keyGenerator.init(random);
//            Key key = keyGenerator.generateKey();
//
//            /*选择HMAC256算法，且传入服务端中存储的私有密钥()*/
//            Algorithm algorithmHS = Algorithm.HMAC256(key.getEncoded());
//            /*服务器端给客户端生成的token，并且传回客户端,这里标注用户尚未登陆*/
//            String token = JWT.create().
//                    withIssuer("auth0").
//                    withClaim("isLogin",false).
//                    sign(algorithmHS);
//
//            /*假设客户端通过解密修改了token，且放在request请求头上，以欺骗服务端*/
//
//            String changeToken = JWT.create().
//                    withClaim("isLogin",true).
//                    sign(Algorithm.HMAC256("BASE64"));
//
//            /*服务端逻辑*/
//            JWTVerifier verifier = JWT.require(algorithmHS).withClaim("isLogin",true).build();
//
//            DecodedJWT jwt = verifier.verify(changeToken);
//        } catch (NoSuchAlgorithmException e) {
//            e.printStackTrace();
//        } catch (UnsupportedEncodingException e) {
//            e.printStackTrace();
//        }

    }
}
